草庐IT

LeetCode - 回文数

全部标签

Leetcode笔记3

15.三数之和题目链接排序+双指针(C++)排序,方便去重固定一个数字nums[k],使用双指针i,j。i从k+1开始,j从n-1开始不断向中间逼近直到i>=j,然后k++。判断nums[i]+nums[j]+nums[k]是否等于0,大于0或者小于0。classSolution{public:vector>threeSum(vector&nums){intk=0,n=nums.size();vector>ans;sort(nums.begin(),nums.end());if(ntemp(3);while(ki&&nums[j]==nums[j-1]){j--;}i++;j--;}elsei

代码随想录算法训练营第三天 | LeetCode 203.移除链表元素 、​LeetCode 707.设计链表、LeetCode 206.反转链表

LeetCode 203.移除链表元素classSolution{public:ListNode*removeElements(ListNode*head,intval){//删除头结点while(head!=NULL&&head->val==val){//注意这里不是ifListNode*tmp=head;head=head->next;deletetmp;}//删除非头结点ListNode*cur=head;while(cur!=NULL&&cur->next!=NULL){if(cur->next->val==val){ListNode*tmp=cur->next;cur->next=c

Leetcode.1654 到家的最少跳跃次数

题目链接Leetcode.1654到家的最少跳跃次数Rating:2124题目描述有一只跳蚤的家在数轴上的位置x处。请你帮助它从位置0出发,到达它的家。跳蚤跳跃的规则如下:它可以往前跳恰好a个位置(即往右跳)。它可以往后跳恰好b个位置(即往左跳)。它不能连续往后跳2次。它不能跳到任何forbidden数组中的位置。跳蚤可以往前跳超过它的家的位置,但是它不能跳到负整数的位置。给你一个整数数组forbidden,其中forbidden[i]是跳蚤不能跳到的位置,同时给你整数a,b和x,请你返回跳蚤到家的最少跳跃次数。如果没有恰好到达x的可行方案,请你返回-1。示例1:输入:forbidden=[1

Leetcode笔记2

8.字符串转换整数(atoi)题目链接自动机思路字符串处理的题目往往涉及复杂的流程以及条件情况,如果直接上手写程序,一不小心就会写出极其臃肿的代码。因此,为了有条理地分析每个输入字符的处理方法,我们可以使用自动机这个概念:我们的程序在每个时刻有一个状态s,每次从序列中输入一个字符c,并根据字符c转移到下一个状态s'。这样,我们只需要建立一个覆盖所有情况的从s与c映射到s'的表格即可解决题目中的问题。算法本题可以建立如下图所示的自动机:image.png状态表(略)接下来编程部分就非常简单了:我们只需要把状态转换表抄进代码即可。另外自动机也需要记录当前已经输入的数字,只要在s'为in_numbe

leetcode刷题之背包问题(01背包)

01背包概念:有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i]weight[i]weight[i],得到的价值是value[i]value[i]value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。方法1:暴力回溯法方法2:动态规划三个物品,物品的重量分别为{1,3,4},物品的价值分别为{15,20,30};背包最大容量为4。(一)二维dp数组确定dp数组以及下标的含义:dp[i][j]dp[i][j]dp[i][j]代表从下标为[0,i]的物品中任意取,放到容量为j的背包里,价值总和最大是多少。确定递推公式不放物品i的最大价值:dp[i

c# - 如何将字节数组转换回文件并使用 C# 自动打开它?

我正在编写一些代码以将文件附件添加到我正在构建的应用程序中。我已经添加和删除工作,但我不知道从哪里开始实现开放。我有一个字节数组(来自表字段),但我不知道如何让它自动打开,例如如果我有一个PDF字节数组,我如何让我的应用程序自动打开Acrobat或任何当前分配给扩展的应用程序使用C#? 最佳答案 为了在任何外部应用程序中打开它,您需要将字节写入磁盘,然后使用Process.Start在临时文件上启动关联的应用程序。只需将临时文件名(带有适当的扩展名)作为Process.Start的唯一参数传递,它就会在适当的应用程序中打开该文件。某

LeetCode:376. 摆动序列——说什么贪心和动规~

🍎道阻且长,行则将至。🍓🌻算法,不如说它是一种思考方式🍀算法专栏:👉🏻123一、🌱376.摆动序列题目描述:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如,[1,7,4,9,2,5]是一个摆动序列,因为差值(6,-3,5,-7,3)是正负交替出现的。相反,[1,4,7,2,5]和[1,7,4,5,5]不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。子序列可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始

c# - 检查一个字符串是否是回文

我有一个字符串作为输入,必须将字符串分成两个子字符串。如果左子字符串等于右子字符串,则执行一些逻辑。我该怎么做?示例:publicboolgetStatus(stringmyString){}示例:myString="ankYkna",所以如果我们将它分成两个子字符串,它将是:left-part="ank",right-part="ank"(反转后)。 最佳答案 只是为了好玩:returnmyString.SequenceEqual(myString.Reverse()); 关于c#-检

c# - 我如何找出最少数量的字符来创建回文?

给定一个字符串,找出最少需要多少个字符才能使这个单词成为回文。示例:ABBA:0(alreadyapalindrome)ABB:1FAE:2FOO:1 最佳答案 仅限算法,因为这可能是家庭作业[向Raymond道歉,这是一个面试问题而不是家庭作业,正如他的编辑/评论所表明的那样。但是,算法和添加的伪代码对于该目的仍然有效,我在最后添加了一些C代码]。您需要找到字符串末尾最长的回文。可以通过简单地从字符串的开头运行一个指针和从结尾运行一个指针来创建一种查看字符串是否为回文的算法,检查它们所指的字符是否相同,直到它们在中间相遇。像这样的

LeetCode | 一探环形链表的奥秘【快慢双指针妙解BAT等大厂经典算法题】

前言本文总结了力扣141.环形链表|以及142.环形链表||这两道有关环形链表的求解方案,去求证链表是否带环已经如何找出入环口的结点。有关环形链表,在BAT等大厂面试中均有出现,一般是属于中等难度的题,需掌握环形链表|&&环形链表||一、题目描述二、思路分析与罗列三、证明:1、【为何快指针每次走两步,慢指针走一步一定能相遇?】2、【快指针一次走3步,走4步,...n步行吗?】四、进阶:如何求出环的入口结点Way1:头结点到入口结点的距离剖析求证Way2:环形链表转相交链表【秒不可言】五、疑难解惑:为什么快指针会在慢指针进入环内的第一圈就相遇?原理图六、整体代码展示1、环形链表|2、环形链表||